#include <iostream>
#include "Bibliotecas.h"
#include "Mineiro.h"

using namespace std;


Mineiro::Mineiro(int x, int y){
	localX = x;
	localY = y;
	energia = 80;
	dinheiro = 15;
	Boom = new UtensilioBoom;
	Energia = new UtensilioEnergia;
	Escada = new UtensilioEscada;
	Luz = new UtensilioLuz;
	Mochila = new UtensilioMochila;
	Picareta = new UtensilioPicareta;
	Seguro = new UtensilioSeguro;
	Vida = new UtensilioVida;
	Viga = new UtensilioViga;
	Vendedor = new UtensilioVendedor;
}
Mineiro::~Mineiro(){}

void Mineiro::desenha_mineiro(int x, int y){
	Consola c;

	c.gotoxy(++x, y++);
	cout << " " << (char)1 << " " << '\n';
	c.gotoxy(x, y++);
	cout << (char)218 << (char)197 << (char)191 << '\n';
	c.gotoxy(x, y++);
	cout << (char)179 << (char)179 << (char)179 << '\n';
	c.gotoxy(x, y++);
	cout << (char)218 << (char)193 << (char)191 << '\n';
	c.gotoxy(x, y);
	cout << (char)179 << " " << (char)179 << '\n';
}
void Mineiro::utensilios(string nome, int valor)
{
	if (nome == "picareta")
		Picareta->setValorPicareta(valor);

	if (nome == "picareta_automatica")
		Picareta->setValorAutomatica(valor);

	if (nome == "martelo_pneumatico")
		Picareta->setValorMartelo(valor);

	if (nome == "mochila")
		Mochila->setValorMochila(valor);

	if (nome == "mochila_pro")
		Mochila->setValorMochilaPro(valor);

	if (nome == "mochila_Heavy_duty")
		Mochila->setValorMochilaHD(valor);

	if (nome == "isqueiro")
		Luz->setValorIsqueiro(valor);

	if (nome == "lanterna")
		Luz->setValorLanterna(valor);

	if (nome == "holofote")
		Luz->setValorLanterna(valor);

	if (nome == "lata_de_atum")
		Energia->setValorAtum(valor);

	if (nome == "bebida_energetica")
		Energia->setValorBebida(valor);

	if (nome == "lancheira_de_campismo")
		Energia->setValorLancheira(valor);

	if (nome == "frigorifico_portatil")
		Energia->setValorFrigorifico(valor);

	if (nome == "aplicador_de_escadas")
		Escada->setValor(valor);

	if (nome == "aplicador_de_vigas")
		Viga->setValor(valor);

	if (nome == "para_quedas")
		Seguro->setValor(valor);

	if (nome == "vida_extra")
		Vida->setValor(valor);

	if (nome == "dinamite")
		Boom->setValor(valor);
}
void Mineiro::incX(){
	localX++;
}
void Mineiro::incY(){
	localY++;
}
void Mineiro::decX(){
	localX--;
}
void Mineiro::decY(){
	localY--;
}

void Mineiro::setLocalX(int x)
{
	localX = x;
}
void Mineiro::setLocalY(int y)
{
	localY = y;
}
void Mineiro::setRecargaBoom(int quantidade)
{
	Boom->setQuantidade(quantidade);
}
void Mineiro::setLevelEnergia(int lvl)
{
	Energia->setLevel(lvl);
}
void Mineiro::setRecargaEscada(int quantidade)
{
	Escada->setQuantidade(quantidade);
}
void Mineiro::setLevelLuz(int lvl)
{
	Luz->setLevel(lvl);
}
void Mineiro::setLevelMochila(int lvl)
{
	Mochila->setLevel(lvl);
}
void Mineiro::setPesoMochila(int peso)
{
	Mochila->setPeso(peso);
}
void Mineiro::setDinheiroMochila(int dinheiro)
{
	Mochila->setDinheiro(dinheiro);
}
void Mineiro::setLevelPicareta(int lvl)
{
	Picareta->setLevel(lvl);
}
void Mineiro::setRecargaSeguro(int quantidade)
{
	Seguro->setQuantidade(quantidade);
}
void Mineiro::setRecargaVendedor(int quantidade)
{
	Vendedor->setQuantidade(quantidade);
}
void Mineiro::setRecargaVida(int quantidade)
{
	Vida->setQuantidade(quantidade);
}
void Mineiro::setRecargaViga(int quantidade)
{
	Viga->setQuantidade(quantidade);
}
void Mineiro::setEnergia(int quantidade)
{
	energia = quantidade;
}
void Mineiro::setDinheiro(int quantidade)
{
	dinheiro = quantidade;
}

int Mineiro::getLocalX() const{
	return localX;
}
int Mineiro::getLocalY() const{
	return localY;
}
int Mineiro::getRecargaBoom() const
{
	return Boom->getQuantidade();
}
int Mineiro::getPrecoBoom() const
{
	return Boom->getPreco();
}
int Mineiro::getLevelEnergia() const
{
	return Energia->getLevel();
}
int Mineiro::getPrecoEnergia(int lvl) const
{
	return Energia->getPreco(lvl);
}
int Mineiro::getEnergiaAlimento() const
{
	return Energia->getEnergia();
}
int Mineiro::getRecargaEscada() const
{
	return Escada->getQuantidade();
}
int Mineiro::getPrecoEscada() const
{
	return Escada->getPreco();
}
int Mineiro::getLevelLuz() const
{
	return Luz->getLevel();
}
int Mineiro::getPrecoLuz(int lvl) const
{
	return Luz->getPreco(lvl);
}
int Mineiro::getLevelMochila() const
{
	return Mochila->getLevel();
}
int Mineiro::getPesoMochila() const
{
	return Mochila->getPeso();
}
int Mineiro::getPrecoMochila(int lvl) const
{
	return Mochila->getPreco(lvl);
}
int Mineiro::getPesoPermitido() const
{
	return Mochila->getLimite();
}
int Mineiro::getDinheiroMochila() const
{
	return Mochila->getDinheiro();
}
int Mineiro::getLevelPicareta() const
{
	return Picareta->getLevel();
}
int Mineiro::getPrecoPicareta(int lvl) const
{
	return Picareta->getPreco(lvl);
}
int Mineiro::getRecargaSeguro() const
{
	return Seguro->getQuantidade();
}
int Mineiro::getPrecoSeguro() const
{
	return Seguro->getPreco();
}
int Mineiro::getRecargaVendedor() const
{
	return Vendedor->getQuantidade();
}
int Mineiro::getPrecoVendedor() const
{
	return Vendedor->getPreco();
}
int Mineiro::getRecargaVida() const
{
	return Vida->getQuantidade();
}
int Mineiro::getPrecoVida() const
{
	return Vida->getPreco();
}
int Mineiro::getRecargaViga() const
{
	return Viga->getQuantidade();
}
int Mineiro::getPrecoViga() const
{
	return Viga->getPreco();
}
int Mineiro::getEnergia() const
{
	return energia;
}
int Mineiro::getDinheiro() const
{
	return dinheiro;
}